Typically, business process management systems are built on a monolithic architecture that has constraints at the application level. At the application level there may be cases where the provision for error recovery may be very limited or do not exist.
By way of example, in a scenario where a functionality instance has to send an e-mail to complete a business process, but the email sending mechanism fails due to a fault, such as a network error or system error, the activity flow of the business process is interrupted or stopped until the e-mail functionality is resolved. In this type of example, typically the error recovery process would be done manually with help of human interaction using another system or through updates. Unfortunately, this would add significant time delays on the completion of the business process.